package org.tity.test.java.lambda;

import java.util.stream.IntStream;

public class Lambda3 {
	
	public static void main(String[] args) {
	    int[] nums = { 1, 2, 3 };
	    // 外部迭代
	    int sum = 0;
	    for (int i : nums) {
	      sum += i;
	    }
	    System.out.println("结果为：" + sum);
	 
	    // 使用stream的内部迭代
	    // map就是中间操作（返回stream的操作）
	    // sum就是终止操作
	    int sum2 = IntStream.of(nums).map(Lambda3::doubleNum).sum();
	    System.out.println("结果1为：" + sum2);
	    
	    int sum3 = IntStream.of(nums).map((int i)->{
	    	return i*3;
	    }).sum();
	    System.out.println("结果2为：" + sum3);
	    
	    System.out.println("惰性求值就是终止没有调用的情况下，中间操作不会执行");
	    IntStream.of(nums).map(Lambda3::doubleNum);
	    
	   Double avg= IntStream.of(nums).map(Lambda3::doubleNum).average().getAsDouble();
	    System.out.println("结果2为：" + avg);
	    
//	    IntStream.of(nums).
	  }
	 
	  public static int doubleNum(int i) {
	    System.out.println("执行了乘以2");
	    return i * 2;
	  }
	
}
